/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import classes.Unidade;
import dao.DaoUnidade;
import dao.IDaoUnidade;
import erro.ConexaoException;
import erro.ConsultaException;
import erro.DaoException;
import erro.GeralException;
import java.util.ArrayList;

/**
 *
 * @author George
 */
public class ControladorUnidade {

    Unidade uni = new Unidade();
    private IDaoUnidade daoUni = new DaoUnidade();

    public ControladorUnidade() {

        this.daoUni = new DaoUnidade();
    }

    /**
     * Validação antes de inserir um novo registro
     * @param uni
     * @throws GeralException 
     */
    public void validar(Unidade uni) throws GeralException {
        if (uni.getNomeUnidade().trim().equals("")) {
            throw new GeralException("Informe o nome da Unidade de Medida!");
        }
    }

    /**
     * trata os possiveis erros na hora da inserção
     * @param uni
     * @throws GeralException 
     */
    public void inserir(Unidade uni) throws GeralException {
        try {
            this.daoUni.inserir(uni);
        } catch (ConexaoException ex) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados. Informe ao Administrador!");
        } catch (DaoException ex) {
            throw new GeralException("Não foi possivel inserir o Usuário! Informe ao Administrador!");
        }
    }

    /**
     * Trata os possiveis erros na hora da alteração
     * @param uni
     * @throws GeralException 
     */
    public void alterar(Unidade uni) throws GeralException {
        try {
            this.daoUni.alterar(uni);
        } catch (ConexaoException ex) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados. Informe ao Administrador!");
        } catch (DaoException ex) {
            throw new GeralException("Não foi possivel alterar o Usuário! Informe ao Administrador!");
        }
    }

    /**
     * Trata os possiveis erros na hora da exclusão
     * @param uni
     * @throws GeralException 
     */
    public void deletar(Unidade uni) throws GeralException {
        try {
            this.daoUni.deletar(uni);
        } catch (ConexaoException ex) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados.");
        } catch (DaoException ex) {
            throw new GeralException("Não foi possivel deletar o Usuário! Informe ao Administrador!");
        }
    }

    /**
     * Trata os possiveis erros na hora da pesquisa
     * @param uni
     * @return
     * @throws GeralException
     * @throws DaoException 
     */
    public Unidade pesquisarUnidade(Unidade uni) throws GeralException, DaoException {
        try {
            this.daoUni.pesquisar(uni);
            if (uni.getCodUnidade() == null) {
                throw new DaoException("Unidade não Encontrada!");
            }

        } catch (ConexaoException e) {
            throw new GeralException("Nao foi possivel conectar-se ao banco de dados.");
        }
        return (uni);
    }

     /**
     * Trata os possiveis erros na hora da pesquisa
     * @param uni
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Unidade> pesquisarUnidadeUni(Unidade uni) throws ConexaoException, ConsultaException {
        return (ArrayList<Unidade>) this.daoUni.pesquisarUni(uni);
    }

    /**
     * Trata os possiveis erros na hora da listagem
     * @param uni
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Unidade> listar(Unidade uni) throws ConexaoException, ConsultaException {
        return (ArrayList<Unidade>) this.daoUni.listar();
    }
}
